﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
using DevExpress.XtraEditors;
using System.Data.SqlClient;

namespace DMU.Gui.GuiPro
{
    public partial class frmThemLop : DevExpress.XtraEditors.XtraForm
    {

        private ucLop ucLop;
        Service sv = new Service();
        help hp = new help();

        public frmThemLop(ucLop uc)
        {
            
            InitializeComponent();
            ucLop = uc;
        }

        #region thoa tác thêm hàng loạt

        private SqlParameter[] getPara(string maLop,string tenLop,int GVCN,string ghiChu,string maLoaiDT,string maNganh, bool active)
        {
            SqlParameter[] pr = new SqlParameter[8];
            pr[0] = new SqlParameter("MaLop0", maLop);
            pr[1] = new SqlParameter("TenLop0", tenLop);
            pr[2] = new SqlParameter("GVCN0", GVCN);
            pr[3] = new SqlParameter("GhiChu0",ghiChu);
            pr[4] = new SqlParameter("MaLoaiDT0", maLoaiDT);
            pr[5] = new SqlParameter("MaNganh0",maNganh);
            pr[6] = new SqlParameter("IsActive0",active);
            pr[7] = new SqlParameter("MaTruong0",Service.info[4]);
            return pr;
        }

        private string[] getInfo()
        {
            string[] st = new string[7];
            st[0] = txtMa.Text;
            st[1] = txtTen.Text;
            st[2] = txtMaGV.Text;
            st[3] = txtGhiChu.Text;
            st[4] = lkpDT.EditValue.ToString();
            st[5] = txtMaNganh.Text;
            st[6] = chkActive.Checked.ToString();

            return st;
        }

        private void cbbPath_ButtonClick(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e)
        {
            string path=hp.openFile();
            if (path!= "")
            {
                cbbPath.Text = path;
                cbbSheetName.Properties.Items.Clear();
                cbbSheetName.Properties.Items.AddRange(sv.getEcelSheetName(path));
                cbbSheetName.Focus();
            }

        }

        private void btnHoanTat_Click(object sender, EventArgs e)
        {
            if (!dxValidationProvider2.Validate())
            {
                if (cbbPath.Text.Trim() == "")
                {
                    cbbPath.Focus(); return;
                }
                else
                {
                    cbbSheetName.Focus(); return;

                }
            }
            DataTable dt = ucLop.dtLop.Clone();

            dt = sv.excelToDatatable(cbbPath.Text, "Select MaLop,TenLop,GVCN,GhiChu,MaLoaiDT,MaNganh,IsActive from ["+cbbSheetName.Text+"]");
                
                if (dt.Rows.Count > 0)
                {
                    try
                    {
                        sv.openConnect();
                        SqlParameter[] pr; int dem = 0; int rowCount=dt.Rows.Count;
                        sv.openConnect();
                        foreach (DataRow row in dt.Rows)
                        {
                            if (row["MaLop"] != null && row["MaLop"].ToString() != "" && row["GVCN"] != null && row["GVCN"].ToString() != "")
                            {
                                try
                                {
                                    pr = getPara(row[0].ToString(), row[1].ToString(), int.Parse(row[2].ToString()), row[3].ToString(), row[4].ToString(), row[5].ToString(), true);

                                }
                                catch(Exception )
                                {
                                    continue;
                                }

                                if (sv.executeScalarStore("dmu_proLThemLop1", pr)=="1")
                                {
                                    dem++;
                                    row["IsActive"] = true;
                                    try
                                    {
                                        ucLop.dtLop.ImportRow(row);
                                    }
                                    catch (Exception) { continue; }
                                    
                                }
                            }
                        }

                        sv.closeConnect();
                        dt.Dispose();
                        hp.showMes("Thêm thành công " +  dem + "/" + rowCount, -1);

                    }
                    catch (Exception et)
                    {
                        hp.showMes("Có lỗi khi thêm !. "+et.Message,1);
                    }
                }

            }

        #endregion

        private void frmThemLop_Load(object sender, EventArgs e)
        {
            lkpDT.Properties.DataSource = ucLop.dtNganh;
            lkpDT.Properties.ValueMember = "MaLoaiDT";
            lkpDT.Properties.DisplayMember = "LoaiDT";
        }

        private void btnLuu_Click(object sender, EventArgs e)
        {
            if (!dxValidationProvider1.Validate())
            {
                return;
            }
            try
            {
                SqlParameter[] pr = getPara(txtMa.Text, txtTen.Text, int.Parse(txtMaGV.Text), txtGhiChu.Text, lkpDT.EditValue.ToString(), txtMaNganh.Text, chkActive.Checked);

                if (ucLop.them)
                {
                    string s = sv.executeScalarStore("dmu_proLThemLop", pr);
                    if (s == "0")
                    {
                        hp.showMes("Mã này đã tồn tại !", 1);
                        txtMa.Focus();
                    }
                    else if (s == "2")
                    {
                        hp.showMes("Mã GVCN không tồn tại !", 1);
                        txtMaGV.Focus();
                    }
                    else if (s == "3")
                    {
                        hp.showMes("Mã ngành không tồn tại !", 1);
                        txtMaNganh.Focus();

                    }

                    else
                    {
                        sv.addRow(ucLop.dtLop, getInfo());
                        txtMa.Text = txtTen.Text = txtGhiChu.Text = "";

                        txtMa.Focus();
                    }
                }
                else
                {
                    string s= sv.executeScalarStore("dmu_proLSuuLop", pr);

                    if (s == "2")
                    {
                        hp.showMes("Mã GVCN không tồn tại !", 1);
                        txtMaGV.Focus();
                    }
                    else if (s == "3")
                    {
                        hp.showMes("Mã ngành không tồn tại !", 1);
                        txtMaNganh.Focus();

                    }
                    else
                    {
                        sv.updateRow(ucLop.dtLop.Rows[ucLop.BindingContext[ucLop.dtLop].Position], getInfo());
                        this.Close();
                    }
                }
            }
            catch (Exception et)
            {
                hp.showMes("Thao tác không thành công !. Vui lòng thử lại " + et.Message, 1);
            }
        }

        private void btnDong_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void txtMa_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == 13)
            {
                EventArgs et = new EventArgs();
                btnLuu_Click(sender, et);
            }
        }




    }
}